//
// Created by sgyt on 2020/2/28.
// alarm中，如果alarm信号丢失，造成整个系统的卡死在pause函数中，并且一直等待
/**
 * 这个版本采用 longjmp,setjmp优化
 */

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <setjmp.h>
static jmp_buf env_alrm;

void sig_alrm()
{
    printf("receive SIGALRM \n");
    longjmp(env_alrm,1);
}

void sleep1()
{
    //注册时钟信号
    signal(SIGALRM,sig_alrm);
    //使用信号
    if(setjmp(env_alrm)==0)
    {
        //注册定时器
        alarm(3);
        //接收信号
        pause();
    }

    printf("start \n");
}


int main(int argc,char *argv[])
{

    return 0;
}
